feat: Unblock wallet_switchEthereumChain#2634
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2634 +/- ##
=======================================
Coverage 98.07% 98.08%
=======================================
Files 398 399 +1
Lines 10976 10991 +15
Branches 1728 1731 +3
=======================================
+ Hits 10765 10780 +15
Misses 211 211 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
2a66d50 to
fd11f16
Compare
|
@metamaskbot update-pr |
|
No dependency changes detected. Learn more about Socket for GitHub. 👍 No dependency changes detected in pull request |
|
@SocketSecurity ignore npm/@metamask/eth-json-rpc-infura@9.1.0 This is ours. |
There was a problem hiding this comment.
In the future we could consider full support for wallet_switchEthereumChain, and actually updating the provider configuration etc., but for now this simply makes the wallet_switchEthereumChain method always return null.
f2aa83e to
1dcbeda
Compare
|
@SocketSecurity ignore npm/vite@4.4.12 Only used for development / testing, and pending update in another PR. @SocketSecurity ignore npm/@metamask/eth-json-rpc-infura@10.0.0 This is ours. |
| */ | ||
| export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { | ||
| const { chainId = '0x1' } = (request.params as BaseParams) ?? {}; | ||
| await switchChain(chainId); |
There was a problem hiding this comment.
probably not a problem, but i think always using mainnet makes it possible in the extension e2e tests that use this snap to try to hit the mainnet infura endpoint, but I think that's probably only the case if something triggers getGasPrice and i'm not certain there is an extension e2e test that does that. Just pointing this out in case I am wrong
packages/snaps-simulation/src/middleware/internal-methods/switch-ethereum-chain.ts
Outdated
Show resolved
Hide resolved
|
sorry, I realize this PR is still marked as draft, so sorry for the early nit comments |
736f8f1 to
afa3bc5
Compare
607162c to
5e27ac2
Compare
3612252 to
ff78991
Compare
838ce80 to
31ffcbf
Compare
Like with websites, we want to support a custom network per Snap rather than relying on the globally selected network. For Snaps, the permission for the network to switch to is automatically granted. [](https://codespaces.new/MetaMask/metamask-extension/pull/26389?quickstart=1) 1. Copy the build files for `@metamask/selected-network-controller` from [this PR](MetaMask/core#4602). 2. Copy the build files for `@metamask/snaps-controllers` and `@metamask/snaps-execution-environments` from [this PR](MetaMask/snaps#2634). 3. Run `test-snaps` for the PR above (`yarn start` in `packages/test-snaps`). 4. Install the Ethereum Provider Example Snap. 5. Switch the chain ID using the `test-snaps` button for the Ethereum Provider example. 6. The Snap should now use the new network, without any permission requests. Step 1 and 2 are no longer necessary once these PRs are merged and released. <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> <!-- [screenshots/recordings] --> <!-- [screenshots/recordings] --> - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
This removes
wallet_switchEthereumChainfrom theBLOCKED_RPC_METHODSlist.Closes MetaMask/MetaMask-planning#2938.
Closes #2654.
Blocked by: